概述
SView for Windows Control提供了OCX控件,
支持通过IE 、Office 、Visual Studio 开发工具进行OCX控件集成,控件集成方便快捷,可以直接在开发工具中控制控件的大小、位置,调用控件中方法,满足不同环境下的需求和使用。文档主要介绍在开发工具中集成SView for Windows Control控件的具体流程。SView for Windows Control控件中接口方法的介绍请查看SView for Windows Control API文档。
集成准备
SView for Windows Control的OCX控件集成需要的环境:
- 运行环境:.Net Framework 4.0。
- 系统环境: Windows XP SP3 以上。
- 最新版本的SView for Windows浏览器OCX控件。
集成说明
嵌入IE浏览器
SView for Windows Control的OCX控件集成需要的环境:
ID为控件名称,CLASSID为控件信息类中的uuid。OCX控件的ID名称为:"SViewWinOCX",CLASSID为:"CLSID:D638AE41-848A-4B29-A8CB-579AADA90835",name为:"SViewWinOCX"。
- 通过设置HTML文件中<OBJECT>标签来创建加载SView for Windows Control控件,具体可见下面列子:
<OBJECT ID="SViewWinOCX" name="SViewWinOCX" WIDTH=600 HEIGHT=600 CLASSID="CLSID:D638AE41-848A-4B29-A8CB-579AADA90835"></OBJECT>
嵌入Office
以嵌入Word(Microsoft Office 2013)为例进行说明:
- 新建或打开需要嵌入的Word,单击【文件】—【选项】—【自定义功能区】,调出“开发工具”。
- Word工具栏中选择【设计模式】,单击【旧式工具】—【其他控件】。
- 选中打开控件选择窗口,找到
SViewControl Control
点击确定。 - 在Word中出现一个矩形框,可用鼠标拖动来调节控件大小。
- 再次点击【设计模式】,退出。
- 完成OCX控件的嵌入。
嵌入Visual Studio
- 在Visual Studio的窗体设计模式下,打开工具箱面板,在“常规”项下右键选择“选择项”。
- 选择“COM组件”选项卡,找到
SViewControl Control
项,选择后点击确定。 - 常规选项下会出现
SViewControl Control
控件,将控件拖入窗体即可。
调用方法
在IE浏览器中调用OCX控件方法:
- 以SView for Windows Control API接口文档中打开本地文件接口:Open(SHORT viewID,BSTR fileUris) 为例。
- 在HTML中使用方法为:
SViewWinOCX.Open(0,"D:\\1.svlx")。
- SViewWinOCX为控件名称(SView for Windows Control的控件名称)。
- Open为控件提供的接口方法。
在Office的Word中设置OCX控件属性:
- 以SView for Windows Control API接口文档中设置属性打开文件:
Src value:"svlPath"
为例。 - 在Word中选中设计模式按钮,在OCX控件内右键选择属性按钮,设置Src属性的值为模型路径,取消设计模式按钮,即可执行。
在Visual Studio调用OCX控件方法:
- 在VS工程中加载了OCX控件的界面调用方法为:
SViewWinOCX.Open(0,"D:\\1.svlx")
。 - SViewWinOCX为控件名称(SView for Windows Control的控件名称)。
- Open为控件提供的接口方法。
智能测量功能集成
通过对拾取、预选及创建等相关接口的组合,实现快速测量尺寸,提高测量的易用性及用户体验;
- 使用拾取器(或自定义拾取器)调用拾取接口传递坐标值,获取拾取到的特征点、线、面等对象;
- 记录拾取到的对象并设置预选状态;
- 使用类型及关系判断相关接口,确定对象之间的关系;
- 调用对应的距离或角度测量接口创建测量对象;
预显
- 根据传递的坐标值(x,y)获取拾取到的特征点、线、面等对象
- 设置拾取到的对象的预选状态
//获取拾取对象(GetPickShape(x,y)) //1、根据拾取器坐标获取拾取到的对象集 Dictionary<ShapeType, SShape> pickShape = smartMeasureFactory.GetPickShape(x, y); //2、根据拾取优先级获取拾取到的对象 SShape sshape = null; foreach (var item in smartMeasureFactory.GetPickTypes()) { dicPickShape.TryGetValue(item, out sshape); if (sshape != null) { return sshape; } } 3、设置预选状态 smartMeasureFactory.preView(sShape, true);
关系判断
- 线、面对象的类型判断详见 SView for Windows Control API
- 两个对象之间的关系判断(如两直线之间的平行、相交等关系)。
//例 判断两直线是否平行 1、记录拾取到的线对象; SLine firstLineShape = GetPickShape( x, y); SLine secondLineShape = GetPickShape( x, y); 2、判断拾取对象关系 //是否平行 bool isParallel = smartMeasureFactory.IsParallel(firstLineShape, secondLineShape);
距离测量
- 根据传递的坐标值(x,y)获取拾取到的特征点、线、面等对象
- 记录并设置拾取到的对象的预选状态
- 根据拾取到的对象类型执行距离测量
//例 点线距离测量 1、记录拾取到的点、线对象; SPoint pntShape = GetPickShape( x, y); SLine lineShape = GetPickShape( x, y); 2、执行距离测量,如果满足是弧线,则进行点到弧线圆心的距离测量 //判断是否是圆弧线 bool isCircleLine = smartMeasureFactory.IsCircleLine(lineShape); Measure measure; if(isCircleLine){ //执行点到圆弧圆心的距离测量 measure =smartMeasureFactory.CreatePntCircleLineDistanceMeasure(pntShape, lineShape); }else{ //执行点到圆弧最近距离测量 measure =smartMeasureFactory.CreatePntLineDistanceMeasure(pntShape, lineShape);; }
角度测量
- 根据传递的坐标值(x,y)获取拾取到的线、面对象
- 记录并设置拾取到的对象的预选状态
- 根据拾取到的对象类型执行角度测量
//例 面面角度测量 1、记录拾取对象; SFace firstFaceShape = GetPickShape( x, y); SFace secondFaceShape = GetPickShape( x, y); 2、判断是否是平面,只有平面可以进行角度测量 bool isPlaneFace1 =smartMeasureFactory.IsPlaneFace(firstFaceShape); bool isPlaneFace2 = smartMeasureFactory.IsPlaneFace(secondFaceShape); Measure measure; if(isPlaneFace1 && isPlaneFace2){ //执行面面角度测量 measure = smartMeasureFactory.CreateFaceFaceAngleMeasure(firstFaceShape, secondFaceShape); }
Demo说明
IE浏览器集成OCX控件示例页面:IE OCX Demo。请使用IE浏览器打开。